import java.util.concurrent.*;

/**
 * Creat with IntelliJ IDEA
 * Description
 * User: mamba24
 * Date: 2022-08-17
 * Time: 10:16
 * To BE A Better Person-2020-3-2
 */
public class TestDemo3 {
    public static void main(String[] args) {
        //corePoolSize: 正式员工的数量. (正式员工, 一旦录用, 永不辞退)
        //maximumPoolSize: 正式员工 + 临时工的数目. (临时工: 一段时间不干活, 就被辞退).
        //keepAliveTime: 临时工允许的空闲时间.
        //unit: keepaliveTime 的时间单位, 是秒, 分钟, 还是其他值.
        //workQueue: 传递任务的阻塞队列
        //threadFactory: 创建线程的工厂, 参与具体的创建线程工作.
        //RejectedExecutionHandler: 拒绝策略, 如果任务量超出公司的负荷了接下来怎么处理
        //拒绝策略
        //AbortPolicy(): 超过负荷, 直接抛出异常.
        //CallerRunsPolicy(): 调用者负责处理
        //DiscardOldestPolicy(): 丢弃队列中最老的任务.
        //DiscardPolicy(): 丢弃新来的任务

        //使用ThreadPoolExecutor创建一个忽略最新任务的线程池，创建规则：
        //1.核心线程数为5
        //2.最大线程数为10
        //3.任务队列为100
        //4.拒绝策略为忽略最新任务
        BlockingQueue<Runnable> queue=new LinkedBlockingQueue<>(100);
        ExecutorService pool=new ThreadPoolExecutor(5,10,1000, TimeUnit.MILLISECONDS,
                queue,
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.DiscardPolicy());

    }


}
